﻿using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Diagnostics;
using pvmoduleditor.contracts;
using pvmoduleditor.contracts.data.contracts;
using pvmoduleditor.contracts.viewmodels;

namespace pvmoduleditor.startguiviewmodel
{
    public class StartGui_ViewModel_bauen : IStartGui_ViewModel_bauen 
    {
        public void Process(IEnumerable<PVModul> pPvModuls)
        {
            Trace.TraceInformation("pvmoduleditor.startguiviewmodel.Process");

            var viewmodel = new StartGuiViewModel {
                PVModulReduziertListe = new ObservableCollection<PVModulReduziert>()
            };
            foreach (var pPvModul in pPvModuls) {
                viewmodel.PVModulReduziertListe.Add(Map(pPvModul));
            }

            Result(viewmodel);
        }

        internal PVModulReduziert Map(PVModul pPvModul) {
            return new PVModulReduziert {
                Artikelnummer = pPvModul.Artikelnummer,
                Hersteller = pPvModul.Hersteller,
                Leistung_W = pPvModul.Leistung_W.ToString(),
                Typ = pPvModul.Typ
            };
        }

        public event Action<StartGuiViewModel> Result;
    }
}
